6.2 附录-RSA加密方案
公钥的使用方式,如下:
步骤1. 获取RSA公钥:调用控制台 GET 接口:/api/v1/admin/getConfig
获取公钥数据。
步骤2. 使用公钥进行加密:调用开发语言相关的 rsa 加密算法接口,使用步骤1中获取到的公钥对数据进行加密。
具体操作步骤如下(以 Python3.6 举例):
import rsa
import requests
def get_console_config():
"""
获取控制台基本配置接口,包含:rsa加密信息
"""
url = 'https://{{SDPC-IP}}:4433/api/v1/admin/getConfig'
return requests.get(url, verify=False).json()
def encrypt(password: str) -> str:
"""
获取控制台rsa公钥,对用户密码进行加密
"""
# 步骤1:获取加密公钥信息
res = get_console_config()
# 1.1 获取防重放随机数
antiReplayRand = res['data']['crypto']['antiReplayRand']
# 1.2 获取公钥
pubKey = int(res['data']['crypto']['pubKey'], 16)
pubKeyExp = int(res['data']['crypto']['pubKeyExp'])
rsa_pubkey = rsa.PublicKey(pubKey, pubKeyExp)
# 1.3 拼接待加密数据:密码及随机数
raw = password + '_' + antiReplayRand
# 步骤2:加密
crypto = rsa.encrypt(raw.encode(), rsa_pubkey)
return crypto.hex()
# 示例
print(encrypt("f2!U~hZ8"))